﻿Imports Control_Vuelos_BL
Public Class frmIndicadorVuelos
    Inherits frmBaseMantenimiento

    ReadOnly vIndicadores As New IndicadoresBL()
    Dim dtPeriodo, dtMes, dtRuta As New DataTable
    Dim sFiltro As String = ""

    Private Sub frmIndicadorVuelos_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        AddHandler BarBtnImprimir.ItemClick, AddressOf prl_imprimir
        AddHandler BarBtnRefresh.ItemClick, AddressOf prl_actualizaindicador
        BarBtnRefresh.Caption = "Generar Indicador"

        AddHandler UcDashboardVuelos1.lstPeriodo.SelectedIndexChanged, AddressOf prl_graficar
        AddHandler UcDashboardVuelos1.lstMes.SelectedIndexChanged, AddressOf prl_graficar
        AddHandler UcDashboardVuelos1.lstRuta.SelectedIndexChanged, AddressOf prl_graficar
        AddHandler UcDashboardVuelos1.chkAgrupar.CheckedChanged, AddressOf prl_graficar

        BarBtnAgregar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
        BarBtnModificar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
        BarBtnEliminar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
        BarBtnGrabar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
        BarBtnCancelar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
        prl_cargacombos()
    End Sub

    Private Sub prl_actualizaindicador()
        If MsgBox(String.Format("¿Está seguro de generar la información para indicadores ?{0}{0}Este proceso puede durar algunos minutos...", vbCrLf), MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Desición") = MsgBoxResult.Yes Then
            If vIndicadores.pr_EliminarIndicador("02") = True Then
                If vIndicadores.pr_GenerarIndicador("21") = True And vIndicadores.pr_GenerarIndicador("22") = True And vIndicadores.pr_GenerarIndicador("23") = True And vIndicadores.pr_GenerarIndicador("24") = True Then
                    MsgBox(String.Format("La generación del indicador se realizó con éxito{0}{0}Los gráficos y la lista seran refrescados...", vbCrLf), MsgBoxStyle.Information, "Proceso éxitoso")
                    UcDashboardVuelos1.lstPeriodo.Items.Clear()
                    UcDashboardVuelos1.lstMes.Items.Clear()
                    UcDashboardVuelos1.lstRuta.Items.Clear()
                    prl_cargacombos()
                Else
                    MsgBox("Ha ocurrido un error al tratar de generar la información de indicadores...", MsgBoxStyle.Critical, "Proceso con problemas")
                End If
            Else
                MsgBox("Ha ocurrido un error al tratar de eliminar la información anterior de indicadores...", MsgBoxStyle.Critical, "Proceso con problemas")
            End If
        End If
    End Sub

    Private Sub prl_graficar()
        If UcDashboardVuelos1.lstPeriodo.ItemCount > 0 And UcDashboardVuelos1.lstMes.ItemCount > 0 And UcDashboardVuelos1.lstRuta.ItemCount > 0 Then
            ' cargo las valores para el filtro
            Dim sPeriodo As String = ""
            For nRegP = 0 To UcDashboardVuelos1.lstPeriodo.SelectedIndices.Count - 1
                Dim nIndice As Integer = UcDashboardVuelos1.lstPeriodo.SelectedIndices.Item(nRegP)
                Dim sValor As String = UcDashboardVuelos1.lstPeriodo.Items(nIndice)
                sPeriodo = String.Format("{0}'{1}'{2}", sPeriodo, sValor.Trim, IIf(nRegP = UcDashboardVuelos1.lstPeriodo.SelectedIndices.Count - 1, "", ","))
            Next
            Dim sMes As String = ""
            For nRegM = 0 To UcDashboardVuelos1.lstMes.SelectedIndices.Count - 1
                Dim nIndice As Integer = UcDashboardVuelos1.lstMes.SelectedIndices.Item(nRegM)
                Dim sValor As String = UcDashboardVuelos1.lstMes.Items(nIndice)
                sMes = String.Format("{0}'{1}'{2}", sMes, sValor.Trim, IIf(nRegM = UcDashboardVuelos1.lstMes.SelectedIndices.Count - 1, "", ","))
            Next
            Dim sRuta As String = ""
            For nRegR = 0 To UcDashboardVuelos1.lstRuta.SelectedIndices.Count - 1
                Dim nIndice As Integer = UcDashboardVuelos1.lstRuta.SelectedIndices.Item(nRegR)
                Dim sValor As String = UcDashboardVuelos1.lstRuta.Items(nIndice)
                sRuta = String.Format("{0}'{1}'{2}", sRuta, sValor.Trim, IIf(nRegR = UcDashboardVuelos1.lstRuta.SelectedIndices.Count - 1, "", ","))
            Next
            Dim lflgTodo As Boolean = UcDashboardVuelos1.chkAgrupar.EditValue
            sFiltro = String.Format("NumAnioId IN ({0}) AND DesMesid IN ({1}) AND DesRutaId IN ({2})", sPeriodo, sMes, sRuta)
            ' cargo el primer grafico (Cantidad de personas por lugar de residencia x mes)
            UcDashboardVuelos1.ChartControl1.DataSource = vIndicadores.pr_CargarIndicadorVuelos(sFiltro, 1, "0", lflgTodo)
            UcDashboardVuelos1.ChartControl1.SeriesDataMember = "DesSerieId"
            UcDashboardVuelos1.ChartControl1.SeriesTemplate.ArgumentDataMember = "DesArgumentId"
            ' cargo el segundo grafico
            UcDashboardVuelos1.ChartControl2.DataSource = vIndicadores.pr_CargarIndicadorVuelos(sFiltro, 2, "0", lflgTodo)
            UcDashboardVuelos1.ChartControl2.SeriesDataMember = "DesSerieId"
            UcDashboardVuelos1.ChartControl2.SeriesTemplate.ArgumentDataMember = "DesArgumentId"
            ' cargo el tercer grafico
            UcDashboardVuelos1.ChartControl3.DataSource = vIndicadores.pr_CargarIndicadorVuelos(sFiltro, 3, "0", lflgTodo)
            UcDashboardVuelos1.ChartControl3.SeriesDataMember = "DesSerieId"
            UcDashboardVuelos1.ChartControl3.SeriesTemplate.ArgumentDataMember = "DesArgumentId"
            ' cargo el cuarto grafico
            UcDashboardVuelos1.ChartControl4.DataSource = vIndicadores.pr_CargarIndicadorVuelos(sFiltro, 4, "0", lflgTodo)
            UcDashboardVuelos1.ChartControl4.SeriesDataMember = "DesSerieId"
            UcDashboardVuelos1.ChartControl4.SeriesTemplate.ArgumentDataMember = "DesArgumentId"
        End If
    End Sub

    Private Sub prl_imprimir()
        If Not UcDashboardVuelos1.ChartControl1.IsPrintingAvailable Then
            MsgBox("The 'DevExpress.XtraPrinting.v7.2.dll' is not found...", MsgBoxStyle.Critical, "Error")
            Return
        End If
        UcDashboardVuelos1.ChartControl1.ShowPrintPreview()
    End Sub

    Private Sub prl_cargacombos()
        dtPeriodo = vIndicadores.pr_Get_Periodo("02")
        For nReg = 0 To dtPeriodo.Rows.Count - 1
            UcDashboardVuelos1.lstPeriodo.Items.Add(dtPeriodo.Rows(nReg).Item("NumAnioId"))
        Next
        dtMes = vIndicadores.pr_Get_Mes("02")
        For nReg = 0 To dtMes.Rows.Count - 1
            UcDashboardVuelos1.lstMes.Items.Add(dtMes.Rows(nReg).Item("DesMesId"))
        Next
        dtRuta = vIndicadores.pr_Get_Ruta("02")
        For nReg = 0 To dtRuta.Rows.Count - 1
            UcDashboardVuelos1.lstRuta.Items.Add(dtRuta.Rows(nReg).Item("DesRutaId"))
        Next
    End Sub
End Class